iT邦幫忙

2024 iThome 鐵人賽

DAY 16
0
Python

讓Python與資安共舞系列 第 16

通訊埠掃描

  • 分享至 

  • xImage
  •  

通訊埠掃描在網路安全滲透測試中是非常重要的概念,如果把伺服器看作一個房子,通訊埠就等於是通向不同房間的門。入侵者要佔領這間房子,是必要破門而入,所以對入侵者而言,這些門後面有什麼東西、開了幾扇,都是相當重要的資訊。
在正常的情況下,通訊埠只有open和closed兩種狀態,但是有時網路安全機制會隱藏對通訊埠的探測,因此通訊埠狀態有可能會無法判斷,所以在探測時要加上一個filtered狀態,表示無法獲悉目標通訊埠的真正狀態。
判斷通訊埠的狀態是一個很複雜的過程,Nmap中就整合了很多種通訊埠掃描方法,而最常見的兩種方法分別是TCP全開掃描與TCP半開掃描。

TCP全開掃描技術
如果目標通訊埠是開放的,那當目標通訊埠接收到主機通訊埠所發出的SYN請求後,就會傳回一個SYN+ACK回應,代表接受這次連接的請求此時主機通訊埠會再回應一個ACK。這樣就成功和目標通訊埠建立一個TCP連接。
如果目標通訊埠是關閉的,那在接到主機通訊埠發出的SYN請求之後,目標通訊埠就會傳回一個RST回應,表示不接受此次連接的請求。
目標通訊埠不開放還有另外一種情況,就是當主機通訊埠發出SYN請求後沒有收到任何的回應,這時我們可以認為通訊埠是關閉的,但也有可能是因為目標主機處於非活躍狀態。

TCP半開掃描技術
剛剛介紹的全開掃描技術還有一些不完整的部分,例如:這次的連接可能會被目標主機的記錄檔記錄下來,而且在全開掃描技術中的三次驗證中,最後一次的驗證是沒用的。在目標傳回SYN+ACK類型的資料封包後就已經達到了探測的目的,所以為了去除這一步,TCP半開的掃描技術就出現了。
這種掃描技術的原理是:當目標接收到主機通訊埠發出的SYN請求後,就會發出一個SYN+ACK回應,表示接受這次連線的請求,而主機通訊埠不用再回應一個ACK,而是回應一個RST表示中斷此次的連接。這樣的過程不算一個完整的TCP連接,所以稱為TCP半開掃描技術。但如果目標通訊埠是關閉的,那TCP全開與半開的掃描就沒有區別了。
在半開中,目標通訊埠的filtered狀態會更複雜,這種狀態常常是封包過濾機制造成的,可能來自專業的防火牆裝置或主機上的軟體防火牆。這些往往會導致掃描工作變得更加困難,因為這些通訊埠往往不會提供訊息,或是回應ICMP錯誤訊息。

今天的介紹到這邊,明天將會撰寫完整的以TCP半開/全開為基礎的完整通訊埠掃描程式。


上一篇
主機狀態掃描(UDP)
下一篇
通訊埠的掃描程式
系列文
讓Python與資安共舞30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言